package br.com.fiap.sas.managedbean;

import java.util.List;

import java.sql.SQLException;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import br.com.fiap.sas.bean.Favorecido;
import br.com.fiap.sas.bean.FavorecidoFrm;
import br.com.fiap.sas.dao.FavorecidoDAO;
import br.com.fiap.sas.managedbean.CorrentistaMB;

@SessionScoped	
@ManagedBean
public class FavorecidoMB {
  
	private FavorecidoFrm frm = new FavorecidoFrm();
	private Favorecido favorecido = new Favorecido();
	private List<Favorecido> colecaoFavorecidos;
	
	public FavorecidoFrm getFavorecidoFrm() {
		return frm;
	}
	
	public void setFavorecidoFrm(FavorecidoFrm frm) {
		this.frm = frm;
	}
	
	public Favorecido getFavorecido() {
		return favorecido;
	}
	
	public void setFavorecido(Favorecido favorecido) {
		this.favorecido = favorecido;
	}
	
	public static List<Favorecido> getFavorecidos(Integer codigoCorrentista, Integer codigoContaPai){
		List<Favorecido> favorecidos=null;
		try {
			favorecidos=FavorecidoDAO.getFavorecidosCorrentistaDao(codigoCorrentista,codigoContaPai);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return favorecidos;
	}
	
	
	public String listarFavorecidos(){
		
		String resultado = "erro";		

		try{			
			FacesContext facesContext = FacesContext.getCurrentInstance();			
			CorrentistaMB cmb = (CorrentistaMB)	facesContext.getExternalContext().getSessionMap().get("correntistaMB");
			colecaoFavorecidos = FavorecidoDAO.getFavorecidosDao(cmb.getCorrentista().getCodigo());
			
			if (colecaoFavorecidos.isEmpty()) resultado = "registrosNotFound";
				
			else resultado = "favorecido";					
	
		} catch(SQLException e) {
			
			System.out.println(e);
			resultado = "erro";
		}
		
		return resultado;
	}
	
public String incluirFavorecido(){
		
		String resultado = "erro";
		Boolean insert = false; 
		
		try{
			FacesContext facesContext = FacesContext.getCurrentInstance();	
			CorrentistaMB cmb = (CorrentistaMB)	facesContext.getExternalContext().getSessionMap().get("correntistaMB");
			
			insert = FavorecidoDAO.incluirFavorecido(frm, cmb.getCorrentista().getCodigo());
			
			if (insert)
				resultado = "sucesso";
			
		}catch(SQLException e){
		
			System.out.println(e);
			resultado = "erro";
		}	
		
		return resultado;
	}
	
	public String atualizarFavorecido(){
	
		String resultado = "erro";	
		Boolean update = false;
		
		try
		{
			update = FavorecidoDAO.atualizarFavorecido(favorecido);			
			if (update) resultado = "sucesso";	
							
		}catch(SQLException e){
			
			System.out.println(e);
			resultado = "erro";
		}		
		
		return resultado;
	}
	
	public String buscaFavorecido()
	{
		String resultado = "erro";	
		
		try
		{   
			
			favorecido = FavorecidoDAO.getFavorecido(favorecido.getCodigo());			
			
			if (!favorecido.getCodigo().equals(null)) {				
				/*
				frm.setCodigoCorrentista(favorecido.getCodigoCorrentista());
				frm.setCodigo(favorecido.getCodigo());
				frm.setNome(favorecido.getNome());
				frm.setNumeroAgencia(favorecido.getNumeroAgencia());
				frm.setNumeroBanco(favorecido.getNumeroBanco());
				frm.setNumeroConta(favorecido.getNumeroConta());
				*/
				resultado = "atualizaFavorecido";
			}
							
		}catch(SQLException e){
			
			System.out.println(e);
			resultado = "erro";
		}		
		
		return resultado;
	}
	
	public String deleteFavorecido(){
		
		String resultado = "erro";	
		Boolean delete = false;
		try
		{   
			delete = FavorecidoDAO.deleteFavorecido(favorecido.getCodigo());
			if (delete) resultado = "sucesso";	
							
		}catch(SQLException e){
			
			System.out.println(e);
			resultado = "erro";
		}		
		
		return resultado;
	}
	
	public String redireciona(){
		
		return "cadFavorecido";
	}
}